package com.qf.FinancialManagement.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.qf.common.annotation.Excel;
import com.qf.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;

/**
 * ---好运常在---
 *
 * @author ChengShuaiKe
 * @date 2025/9/2 0002
 * @desc
 */
public class TmsStatementCc extends BaseEntity {
    private static final long serialVersionUID = 1L;


    @Excel(name = "ID", type = Excel.Type.EXPORT)
    /** 自增主键 */
    private Long id;

    /** 对账单号 */
    @Excel(name = "对账单号")
    private String statementNo;

    /** 客户名称 */
    @Excel(name = "客户名称")
    private String customer;

    /** 结算状态 */
    @Excel(name = "结算状态", readConverterExp = "unsettled=未结算,settled=已结算,partiallySettled=部分结算")
    private String settlementStatus;

    /** 订单总数量 */
    @Excel(name = "订单总数量")
    private Long totalOrders;

    /** 货物数量 */
    @Excel(name = "货物数量")
    private Long goodsQuantity;

    /** 货物总体积(立方米) */
    @Excel(name = "货物总体积")
    private BigDecimal totalVolume;

    /** 货物总重量(千克) */
    @Excel(name = "货物总重量")
    private BigDecimal totalWeight;

    /** 应收总金额(元) */
    @Excel(name = "应收总金额(元)")
    private BigDecimal receivableAmount;

    /** 实收总金额(元) */
    @Excel(name = "实收总金额(元)")
    private BigDecimal actualReceivedAmount;

    /** 创建人 */
    @Excel(name = "创建人")
    private String creator;

    /** 记录创建时间 - 显式声明字段以支持@Excel注解 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "记录创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createTime;  // 显式声明父类字段

    /** 重写getter方法，使用当前类字段 */
    @Override
    public Date getCreateTime() {
        return this.createTime;  // 返回当前类字段而非super
    }

    /** 重写setter方法，设置当前类字段 */
    @Override
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;  // 设置当前类字段而非super
    }




    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setStatementNo(String statementNo)
    {
        this.statementNo = statementNo;
    }

    public String getStatementNo()
    {
        return statementNo;
    }

    public void setCustomer(String customer)
    {
        this.customer = customer;
    }

    public String getCustomer()
    {
        return customer;
    }

    public void setSettlementStatus(String settlementStatus)
    {
        this.settlementStatus = settlementStatus;
    }

    public String getSettlementStatus()
    {
        return settlementStatus;
    }

    public void setTotalOrders(Long totalOrders)
    {
        this.totalOrders = totalOrders;
    }

    public Long getTotalOrders()
    {
        return totalOrders;
    }

    public void setGoodsQuantity(Long goodsQuantity)
    {
        this.goodsQuantity = goodsQuantity;
    }

    public Long getGoodsQuantity()
    {
        return goodsQuantity;
    }

    public void setTotalVolume(BigDecimal totalVolume)
    {
        this.totalVolume = totalVolume;
    }

    public BigDecimal getTotalVolume()
    {
        return totalVolume;
    }

    public void setTotalWeight(BigDecimal totalWeight)
    {
        this.totalWeight = totalWeight;
    }

    public BigDecimal getTotalWeight()
    {
        return totalWeight;
    }

    public void setReceivableAmount(BigDecimal receivableAmount)
    {
        this.receivableAmount = receivableAmount;
    }

    public BigDecimal getReceivableAmount()
    {
        return receivableAmount;
    }

    public void setActualReceivedAmount(BigDecimal actualReceivedAmount)
    {
        this.actualReceivedAmount = actualReceivedAmount;
    }

    public BigDecimal getActualReceivedAmount()
    {
        return actualReceivedAmount;
    }

    public void setCreator(String creator)
    {
        this.creator = creator;
    }

    public String getCreator()
    {
        return creator;
    }







    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("statementNo", getStatementNo())
                .append("customer", getCustomer())
                .append("settlementStatus", getSettlementStatus())
                .append("totalOrders", getTotalOrders())
                .append("goodsQuantity", getGoodsQuantity())
                .append("totalVolume", getTotalVolume())
                .append("totalWeight", getTotalWeight())
                .append("receivableAmount", getReceivableAmount())
                .append("actualReceivedAmount", getActualReceivedAmount())
                .append("creator", getCreator())
                .append("createTime", getCreateTime())
                .toString();
    }
    // 搜索关键词字段
    private String keyword;

    // 日期范围查询字段
    private Date beginCreateTime;
    private Date endCreateTime;

    public String getKeyword() {
        return keyword;
    }

    public void setKeyword(String keyword) {
        this.keyword = keyword;
    }

    public Date getBeginCreateTime() {
        return beginCreateTime;
    }

    public void setBeginCreateTime(Date beginCreateTime) {
        this.beginCreateTime = beginCreateTime;
    }

    public Date getEndCreateTime() {
        return endCreateTime;
    }

    public void setEndCreateTime(Date endCreateTime) {
        this.endCreateTime = endCreateTime;
    }
}